class: center, middle, inverse, title-slide .title[ # Procesando datos con tidyverse ] .subtitle[ ## Dirección Nacional de Estadística Criminal - Ministerio de Seguridad ] --- <style type="text/css"> .remark-slide-content { font-size: 25px; padding: 1em 1em 1em 1em; } <style type="text/css"> .remark-code{ line-height: 1.5; font-size: 80% } @media print { .has-continuation { display: block; } } </style> # Hoja de ruta ## Universo tidyverse ## Presentación de los paquetes `dplyr` y `tidyr` .pull-left[ ## ✔️ dplyr ☑️️ `select()` ☑️️ `filter()` ☑️️ `mutate()` ☑️️ `rename()` ☑️️ `arragne()` ☑️️ `summarise()` ☑️️ `group_by()` ] .pull-right[ ## ✔️ magrittr ☑️ `%>%` ## ✔️ tidyr ☑️ `pivot_longer()` ☑️ `pivot_wider()` ] --- class: inverse, middle, center # _summarise()_ <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> _<p style="color:grey;" align:"center">Resume la información en una nueva tabla</p>_ --- # summarise() <br><br> <br><br> ```r base_de_datos %>% summarise(var1_resumen = sum(var1), var2_media = mean(var2)) ``` --- count: false # _summarise()_ .panel1-summarise_1-auto[ ```r *base_snic ``` ] .panel2-summarise_1-auto[ ``` ## # A tibble: 1,390,553 x 13 ## anio provinc~1 provi~2 dpto_id dpto_~3 codig~4 codig~5 mes victi~6 victi~7 ## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> ## 1 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 1 1 0 ## 2 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 2 2 0 ## 3 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 3 2 0 ## 4 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 4 1 2 ## 5 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 5 5 0 ## 6 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 6 1 1 ## 7 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 7 2 0 ## 8 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 8 2 0 ## 9 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 9 1 0 ## 10 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 10 2 1 ## # ... with 1,390,543 more rows, 3 more variables: victimas_no_consta <dbl>, ## # cantidad_victimas <dbl>, cantidad_hechos <dbl>, and abbreviated variable ## # names 1: provincia_id, 2: provincia_nombre, 3: dpto_nombre, ## # 4: codigo_delito_snic_id, 5: codigo_delito_snic_nombre, ## # 6: victimas_masculino, 7: victimas_femenino ## # i Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names ``` ] --- count: false # _summarise()_ .panel1-summarise_1-auto[ ```r base_snic %>% * summarise(victimas_min = min(cantidad_victimas, * na.rm = TRUE), * victimas_max = max(cantidad_victimas, * na.rm = TRUE), * victimas_tot = sum(cantidad_victimas, * na.rm = TRUE), * victimas_prom = mean(cantidad_victimas, * na.rm = TRUE)) ``` ] .panel2-summarise_1-auto[ ``` ## # A tibble: 1 x 4 ## victimas_min victimas_max victimas_tot victimas_prom ## <dbl> <dbl> <dbl> <dbl> ## 1 0 1534 1389390 4.57 ``` ] <style> .panel1-summarise_1-auto { color: black; width: 42.4666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-summarise_1-auto { color: black; width: 55.5333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-summarise_1-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- # summarise() <br><br> ## Otra forma de filtrar los valores NA, sin tener que especificarlo en cada función dentro del `summarise()` --- count: false # _group_by()_ .panel1-summarise_2-auto[ ```r *base_snic ``` ] .panel2-summarise_2-auto[ ``` ## # A tibble: 1,390,553 x 13 ## anio provinc~1 provi~2 dpto_id dpto_~3 codig~4 codig~5 mes victi~6 victi~7 ## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> ## 1 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 1 1 0 ## 2 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 2 2 0 ## 3 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 3 2 0 ## 4 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 4 1 2 ## 5 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 5 5 0 ## 6 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 6 1 1 ## 7 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 7 2 0 ## 8 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 8 2 0 ## 9 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 9 1 0 ## 10 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 10 2 1 ## # ... with 1,390,543 more rows, 3 more variables: victimas_no_consta <dbl>, ## # cantidad_victimas <dbl>, cantidad_hechos <dbl>, and abbreviated variable ## # names 1: provincia_id, 2: provincia_nombre, 3: dpto_nombre, ## # 4: codigo_delito_snic_id, 5: codigo_delito_snic_nombre, ## # 6: victimas_masculino, 7: victimas_femenino ## # i Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names ``` ] --- count: false # _group_by()_ .panel1-summarise_2-auto[ ```r base_snic %>% * filter(!is.na(cantidad_victimas)) ``` ] .panel2-summarise_2-auto[ ``` ## # A tibble: 303,920 x 13 ## anio provinc~1 provi~2 dpto_id dpto_~3 codig~4 codig~5 mes victi~6 victi~7 ## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> ## 1 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 1 1 0 ## 2 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 2 2 0 ## 3 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 3 2 0 ## 4 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 4 1 2 ## 5 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 5 5 0 ## 6 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 6 1 1 ## 7 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 7 2 0 ## 8 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 8 2 0 ## 9 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 9 1 0 ## 10 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 10 2 1 ## # ... with 303,910 more rows, 3 more variables: victimas_no_consta <dbl>, ## # cantidad_victimas <dbl>, cantidad_hechos <dbl>, and abbreviated variable ## # names 1: provincia_id, 2: provincia_nombre, 3: dpto_nombre, ## # 4: codigo_delito_snic_id, 5: codigo_delito_snic_nombre, ## # 6: victimas_masculino, 7: victimas_femenino ## # i Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names ``` ] --- count: false # _group_by()_ .panel1-summarise_2-auto[ ```r base_snic %>% filter(!is.na(cantidad_victimas)) %>% * summarise(victimas_min = min(cantidad_victimas), * victimas_max = max(cantidad_victimas), * victimas_tot = sum(cantidad_victimas), * victimas_prom = mean(cantidad_victimas)) ``` ] .panel2-summarise_2-auto[ ``` ## # A tibble: 1 x 4 ## victimas_min victimas_max victimas_tot victimas_prom ## <dbl> <dbl> <dbl> <dbl> ## 1 0 1534 1389390 4.57 ``` ] <style> .panel1-summarise_2-auto { color: black; width: 42.4666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-summarise_2-auto { color: black; width: 55.5333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-summarise_2-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: inverse, middle, center # _group_by()_ <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> _<p style="color:grey;" align:"center">Aplica una operación sobre la población de forma segmentada</p>_ --- # group_by() <br><br> <br><br> ```r base_de_datos %>% `group_by(variable_de_corte)` ``` --- count: false # _group_by()_ .panel1-group_by_1-auto[ ```r *base_snic ``` ] .panel2-group_by_1-auto[ ``` ## # A tibble: 1,390,553 x 13 ## anio provinc~1 provi~2 dpto_id dpto_~3 codig~4 codig~5 mes victi~6 victi~7 ## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> ## 1 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 1 1 0 ## 2 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 2 2 0 ## 3 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 3 2 0 ## 4 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 4 1 2 ## 5 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 5 5 0 ## 6 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 6 1 1 ## 7 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 7 2 0 ## 8 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 8 2 0 ## 9 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 9 1 0 ## 10 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 10 2 1 ## # ... with 1,390,543 more rows, 3 more variables: victimas_no_consta <dbl>, ## # cantidad_victimas <dbl>, cantidad_hechos <dbl>, and abbreviated variable ## # names 1: provincia_id, 2: provincia_nombre, 3: dpto_nombre, ## # 4: codigo_delito_snic_id, 5: codigo_delito_snic_nombre, ## # 6: victimas_masculino, 7: victimas_femenino ## # i Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names ``` ] --- count: false # _group_by()_ .panel1-group_by_1-auto[ ```r base_snic %>% * filter(!is.na(cantidad_victimas)) ``` ] .panel2-group_by_1-auto[ ``` ## # A tibble: 303,920 x 13 ## anio provinc~1 provi~2 dpto_id dpto_~3 codig~4 codig~5 mes victi~6 victi~7 ## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> ## 1 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 1 1 0 ## 2 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 2 2 0 ## 3 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 3 2 0 ## 4 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 4 1 2 ## 5 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 5 5 0 ## 6 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 6 1 1 ## 7 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 7 2 0 ## 8 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 8 2 0 ## 9 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 9 1 0 ## 10 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 10 2 1 ## # ... with 303,910 more rows, 3 more variables: victimas_no_consta <dbl>, ## # cantidad_victimas <dbl>, cantidad_hechos <dbl>, and abbreviated variable ## # names 1: provincia_id, 2: provincia_nombre, 3: dpto_nombre, ## # 4: codigo_delito_snic_id, 5: codigo_delito_snic_nombre, ## # 6: victimas_masculino, 7: victimas_femenino ## # i Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names ``` ] --- count: false # _group_by()_ .panel1-group_by_1-auto[ ```r base_snic %>% filter(!is.na(cantidad_victimas)) %>% * group_by(anio) ``` ] .panel2-group_by_1-auto[ ``` ## # A tibble: 303,920 x 13 ## # Groups: anio [4] ## anio provinc~1 provi~2 dpto_id dpto_~3 codig~4 codig~5 mes victi~6 victi~7 ## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> ## 1 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 1 1 0 ## 2 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 2 2 0 ## 3 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 3 2 0 ## 4 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 4 1 2 ## 5 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 5 5 0 ## 6 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 6 1 1 ## 7 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 7 2 0 ## 8 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 8 2 0 ## 9 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 9 1 0 ## 10 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 10 2 1 ## # ... with 303,910 more rows, 3 more variables: victimas_no_consta <dbl>, ## # cantidad_victimas <dbl>, cantidad_hechos <dbl>, and abbreviated variable ## # names 1: provincia_id, 2: provincia_nombre, 3: dpto_nombre, ## # 4: codigo_delito_snic_id, 5: codigo_delito_snic_nombre, ## # 6: victimas_masculino, 7: victimas_femenino ## # i Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names ``` ] --- count: false # _group_by()_ .panel1-group_by_1-auto[ ```r base_snic %>% filter(!is.na(cantidad_victimas)) %>% group_by(anio) %>% * summarise(victimas_min = min(cantidad_victimas), * victimas_max = max(cantidad_victimas), * victimas_tot = sum(cantidad_victimas), * victimas_prom = mean(cantidad_victimas)) ``` ] .panel2-group_by_1-auto[ ``` ## # A tibble: 4 x 5 ## anio victimas_min victimas_max victimas_tot victimas_prom ## <dbl> <dbl> <dbl> <dbl> <dbl> ## 1 2017 0 1142 363178 4.81 ## 2 2018 0 1534 353223 4.69 ## 3 2019 0 1339 361267 4.72 ## 4 2020 0 1137 311722 4.07 ``` ] <style> .panel1-group_by_1-auto { color: black; width: 42.4666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-group_by_1-auto { color: black; width: 55.5333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-group_by_1-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- # summarise() <br><br> ## **Caso:** Queremos conocer la cantidad de victimas por mes que hubo en el año 2020, únicamente en la provincia de Neuquén. --- count: false # _group_by()_ .panel1-group_by_2-auto[ ```r *base_snic ``` ] .panel2-group_by_2-auto[ ``` ## # A tibble: 1,390,553 x 13 ## anio provinc~1 provi~2 dpto_id dpto_~3 codig~4 codig~5 mes victi~6 victi~7 ## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> ## 1 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 1 1 0 ## 2 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 2 2 0 ## 3 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 3 2 0 ## 4 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 4 1 2 ## 5 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 5 5 0 ## 6 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 6 1 1 ## 7 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 7 2 0 ## 8 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 8 2 0 ## 9 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 9 1 0 ## 10 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 10 2 1 ## # ... with 1,390,543 more rows, 3 more variables: victimas_no_consta <dbl>, ## # cantidad_victimas <dbl>, cantidad_hechos <dbl>, and abbreviated variable ## # names 1: provincia_id, 2: provincia_nombre, 3: dpto_nombre, ## # 4: codigo_delito_snic_id, 5: codigo_delito_snic_nombre, ## # 6: victimas_masculino, 7: victimas_femenino ## # i Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names ``` ] --- count: false # _group_by()_ .panel1-group_by_2-auto[ ```r base_snic %>% * select(anio, mes, * provincia_nombre, * cantidad_victimas) ``` ] .panel2-group_by_2-auto[ ``` ## # A tibble: 1,390,553 x 4 ## anio mes provincia_nombre cantidad_victimas ## <dbl> <dbl> <chr> <dbl> ## 1 2017 1 Ciudad Autónoma de Buenos Aires 1 ## 2 2017 2 Ciudad Autónoma de Buenos Aires 2 ## 3 2017 3 Ciudad Autónoma de Buenos Aires 2 ## 4 2017 4 Ciudad Autónoma de Buenos Aires 3 ## 5 2017 5 Ciudad Autónoma de Buenos Aires 5 ## 6 2017 6 Ciudad Autónoma de Buenos Aires 2 ## 7 2017 7 Ciudad Autónoma de Buenos Aires 2 ## 8 2017 8 Ciudad Autónoma de Buenos Aires 2 ## 9 2017 9 Ciudad Autónoma de Buenos Aires 1 ## 10 2017 10 Ciudad Autónoma de Buenos Aires 3 ## # ... with 1,390,543 more rows ## # i Use `print(n = ...)` to see more rows ``` ] --- count: false # _group_by()_ .panel1-group_by_2-auto[ ```r base_snic %>% select(anio, mes, provincia_nombre, cantidad_victimas) %>% * filter(anio == 2020) ``` ] .panel2-group_by_2-auto[ ``` ## # A tibble: 351,120 x 4 ## anio mes provincia_nombre cantidad_victimas ## <dbl> <dbl> <chr> <dbl> ## 1 2020 1 Ciudad Autónoma de Buenos Aires 1 ## 2 2020 2 Ciudad Autónoma de Buenos Aires 4 ## 3 2020 3 Ciudad Autónoma de Buenos Aires 2 ## 4 2020 4 Ciudad Autónoma de Buenos Aires 2 ## 5 2020 5 Ciudad Autónoma de Buenos Aires 4 ## 6 2020 6 Ciudad Autónoma de Buenos Aires 1 ## 7 2020 7 Ciudad Autónoma de Buenos Aires 3 ## 8 2020 8 Ciudad Autónoma de Buenos Aires 1 ## 9 2020 9 Ciudad Autónoma de Buenos Aires 2 ## 10 2020 10 Ciudad Autónoma de Buenos Aires 3 ## # ... with 351,110 more rows ## # i Use `print(n = ...)` to see more rows ``` ] --- count: false # _group_by()_ .panel1-group_by_2-auto[ ```r base_snic %>% select(anio, mes, provincia_nombre, cantidad_victimas) %>% filter(anio == 2020) %>% * filter(provincia_nombre == "Neuquén") ``` ] .panel2-group_by_2-auto[ ``` ## # A tibble: 10,560 x 4 ## anio mes provincia_nombre cantidad_victimas ## <dbl> <dbl> <chr> <dbl> ## 1 2020 1 Neuquén 0 ## 2 2020 2 Neuquén 0 ## 3 2020 3 Neuquén 0 ## 4 2020 4 Neuquén 0 ## 5 2020 5 Neuquén 0 ## 6 2020 6 Neuquén 1 ## 7 2020 7 Neuquén 0 ## 8 2020 8 Neuquén 0 ## 9 2020 9 Neuquén 0 ## 10 2020 10 Neuquén 0 ## # ... with 10,550 more rows ## # i Use `print(n = ...)` to see more rows ``` ] --- count: false # _group_by()_ .panel1-group_by_2-auto[ ```r base_snic %>% select(anio, mes, provincia_nombre, cantidad_victimas) %>% filter(anio == 2020) %>% filter(provincia_nombre == "Neuquén") %>% * group_by(mes) ``` ] .panel2-group_by_2-auto[ ``` ## # A tibble: 10,560 x 4 ## # Groups: mes [12] ## anio mes provincia_nombre cantidad_victimas ## <dbl> <dbl> <chr> <dbl> ## 1 2020 1 Neuquén 0 ## 2 2020 2 Neuquén 0 ## 3 2020 3 Neuquén 0 ## 4 2020 4 Neuquén 0 ## 5 2020 5 Neuquén 0 ## 6 2020 6 Neuquén 1 ## 7 2020 7 Neuquén 0 ## 8 2020 8 Neuquén 0 ## 9 2020 9 Neuquén 0 ## 10 2020 10 Neuquén 0 ## # ... with 10,550 more rows ## # i Use `print(n = ...)` to see more rows ``` ] --- count: false # _group_by()_ .panel1-group_by_2-auto[ ```r base_snic %>% select(anio, mes, provincia_nombre, cantidad_victimas) %>% filter(anio == 2020) %>% filter(provincia_nombre == "Neuquén") %>% group_by(mes) %>% * summarise(victimas_total = sum(cantidad_victimas, * na.rm = TRUE)) ``` ] .panel2-group_by_2-auto[ ``` ## # A tibble: 12 x 2 ## mes victimas_total ## <dbl> <dbl> ## 1 1 578 ## 2 2 485 ## 3 3 326 ## 4 4 264 ## 5 5 320 ## 6 6 325 ## 7 7 297 ## 8 8 354 ## 9 9 344 ## 10 10 391 ## 11 11 409 ## 12 12 401 ``` ] --- count: false # _group_by()_ .panel1-group_by_2-auto[ ```r base_snic %>% select(anio, mes, provincia_nombre, cantidad_victimas) %>% filter(anio == 2020) %>% filter(provincia_nombre == "Neuquén") %>% group_by(mes) %>% summarise(victimas_total = sum(cantidad_victimas, na.rm = TRUE)) %>% * arrange(mes) ``` ] .panel2-group_by_2-auto[ ``` ## # A tibble: 12 x 2 ## mes victimas_total ## <dbl> <dbl> ## 1 1 578 ## 2 2 485 ## 3 3 326 ## 4 4 264 ## 5 5 320 ## 6 6 325 ## 7 7 297 ## 8 8 354 ## 9 9 344 ## 10 10 391 ## 11 11 409 ## 12 12 401 ``` ] <style> .panel1-group_by_2-auto { color: black; width: 45.7333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-group_by_2-auto { color: black; width: 52.2666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-group_by_2-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: middle, center, inverse <img src="data:image/png;base64,#img/logo tidyr.png" width="30%" style="display: block; margin: auto;" /> --- # Funciones del paquete tidyr: <br><br> <br><br> | __Función__ | __Acción__ | | :--- | ---: | | `pivot_longer()` | *Transforma en filas varias columnas*| | `pivot_wider()` | *transforma en columnas varias filas*| --- # estructura de datos <br> .pull-left[ <img src="data:image/png;base64,#img/dato_ancho.png" width="80%" style="display: block; margin: auto;" /> ] .pull-right[ <img src="data:image/png;base64,#img/dato_largo.png" width="80%" style="display: block; margin: auto;" /> ] --- class: inverse, middle, center # _pivot_longer()_ <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> _<p style="color:grey;" align:"center">Reestructura la base, apilando varias columnas en una. De ancho a largo</p>_ --- count: false # _pivot_longer()_ .panel1-pivot_longer_1-auto[ ```r *base_snic ``` ] .panel2-pivot_longer_1-auto[ ``` ## # A tibble: 1,390,553 x 13 ## anio provinc~1 provi~2 dpto_id dpto_~3 codig~4 codig~5 mes victi~6 victi~7 ## <dbl> <dbl> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> ## 1 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 1 1 0 ## 2 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 2 2 0 ## 3 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 3 2 0 ## 4 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 4 1 2 ## 5 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 5 5 0 ## 6 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 6 1 1 ## 7 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 7 2 0 ## 8 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 8 2 0 ## 9 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 9 1 0 ## 10 2017 2 Ciudad~ 02001 Comuna~ 1 Homici~ 10 2 1 ## # ... with 1,390,543 more rows, 3 more variables: victimas_no_consta <dbl>, ## # cantidad_victimas <dbl>, cantidad_hechos <dbl>, and abbreviated variable ## # names 1: provincia_id, 2: provincia_nombre, 3: dpto_nombre, ## # 4: codigo_delito_snic_id, 5: codigo_delito_snic_nombre, ## # 6: victimas_masculino, 7: victimas_femenino ## # i Use `print(n = ...)` to see more rows, and `colnames()` to see all variable names ``` ] --- count: false # _pivot_longer()_ .panel1-pivot_longer_1-auto[ ```r base_snic %>% * summarise(victimas_masculino = sum(victimas_masculino, * na.rm = TRUE), * victimas_femenino = sum(victimas_femenino, * na.rm = TRUE), * victimas_no_consta = sum(victimas_no_consta, * na.rm = TRUE), * victimas_total = sum(cantidad_victimas, * na.rm = TRUE)) ``` ] .panel2-pivot_longer_1-auto[ ``` ## # A tibble: 1 x 4 ## victimas_masculino victimas_femenino victimas_no_consta victimas_total ## <dbl> <dbl> <dbl> <dbl> ## 1 648796 635672 104922 1389390 ``` ] --- count: false # _pivot_longer()_ .panel1-pivot_longer_1-auto[ ```r base_snic %>% summarise(victimas_masculino = sum(victimas_masculino, na.rm = TRUE), victimas_femenino = sum(victimas_femenino, na.rm = TRUE), victimas_no_consta = sum(victimas_no_consta, na.rm = TRUE), victimas_total = sum(cantidad_victimas, na.rm = TRUE)) %>% * pivot_longer(cols = c(victimas_masculino, victimas_femenino, * victimas_no_consta, victimas_total), * names_to = "tipo_de_victima", * values_to = "cantidad") ``` ] .panel2-pivot_longer_1-auto[ ``` ## # A tibble: 4 x 2 ## tipo_de_victima cantidad ## <chr> <dbl> ## 1 victimas_masculino 648796 ## 2 victimas_femenino 635672 ## 3 victimas_no_consta 104922 ## 4 victimas_total 1389390 ``` ] <style> .panel1-pivot_longer_1-auto { color: black; width: 42.4666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-pivot_longer_1-auto { color: black; width: 55.5333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-pivot_longer_1-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style> --- class: inverse, middle, center # _pivot_wider()_ <html> <div style='float:left'></div> <hr color='#EB811B' size=1px width=1125px> </html> _<p style="color:grey;" align:"center">Reestructura la base, encolumnando varias filas de una variable. De largo a ancho</p>_ --- count: false # _pivot_wider()_ .panel1-pivot_wider_1-auto[ ```r *base_largo ``` ] .panel2-pivot_wider_1-auto[ ``` ## # A tibble: 4 x 2 ## tipo_de_victima cantidad ## <chr> <dbl> ## 1 victimas_masculino 648796 ## 2 victimas_femenino 635672 ## 3 victimas_no_consta 104922 ## 4 victimas_total 1389390 ``` ] --- count: false # _pivot_wider()_ .panel1-pivot_wider_1-auto[ ```r base_largo %>% * pivot_wider(names_from = "tipo_de_victima", #<< * values_from = "cantidad") ``` ] .panel2-pivot_wider_1-auto[ ``` ## # A tibble: 1 x 4 ## victimas_masculino victimas_femenino victimas_no_consta victimas_total ## <dbl> <dbl> <dbl> <dbl> ## 1 648796 635672 104922 1389390 ``` ] <style> .panel1-pivot_wider_1-auto { color: black; width: 42.4666666666667%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel2-pivot_wider_1-auto { color: black; width: 55.5333333333333%; hight: 32%; float: left; padding-left: 1%; font-size: 80% } .panel3-pivot_wider_1-auto { color: black; width: NA%; hight: 33%; float: left; padding-left: 1%; font-size: 80% } </style>